package Modelo.DAL;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.json.JSONArray;
import org.json.JSONObject;

/**
 *
 * @author Alberto Sanchez
 */
public class Espacio_DAO {

    public Espacio_DAO() {
    }

    public JSONArray listEspacios() {
        ConexionBD conexion = new ConexionBD();
        if (conexion.session == null) {
            return null;
        }
        Statement s = null;
        try {
            s = conexion.session.createStatement();
            String query = "select e.nombre_espacio, e.coordX, e.coordY from espacio e order by e.nombre_espacio asc";
            ResultSet rs = s.executeQuery(query);

            conexion.session.setHoldability(rs.HOLD_CURSORS_OVER_COMMIT);

            JSONArray espacios = new JSONArray();
            int i = 0;
            while (rs.next()) {
                JSONObject jo2 = new JSONObject();
                jo2.put("nombre", rs.getString(1));
                jo2.put("coordX", rs.getString(2));
                jo2.put("coordY", rs.getString(3));

                espacios.put(i, jo2);
                i++;
            }
            rs.close();
            return espacios;
        } catch (SQLException se) {
            System.out.println("Error Consultando Espacios!\n");
            return null;
        } catch (Exception ex) {
            System.out.println("Error Consultando Espacios!\n");
            return null;
        } finally {
            if (conexion != null) {
                conexion.cerrarConexion();
            }
        }
    }

    //Lista los espacios segun la sede ingresada, por favor NO BORRAR
    public JSONArray listEspaciosSede(String sede) {
        ConexionBD conexion = new ConexionBD();
        if (conexion.session == null) {
            return null;
        }
        Statement s = null;
        try {
            s = conexion.session.createStatement();
            String query = "select * from espacio e where e.nombre_sede = '" + sede + "' order by e.nombre_espacio asc";
            ResultSet rs = s.executeQuery(query);

            conexion.session.setHoldability(rs.HOLD_CURSORS_OVER_COMMIT);

            JSONArray espacios = new JSONArray();
            int i = 0;
            while (rs.next()) {
                JSONObject jo2 = new JSONObject();
                jo2.put("nombre", rs.getString(1));
                jo2.put("tipo", rs.getString(5));
                jo2.put("coordX", rs.getString(7));
                jo2.put("coordY", rs.getString(8));

                espacios.put(i, jo2);
                i++;
            }
            rs.close();
            return espacios;
        } catch (SQLException se) {
            System.out.println("Error Consultando Espacios!\n");
            return null;
        } catch (Exception ex) {
            System.out.println("Error Consultando Espacios!\n");
            return null;
        } finally {
            if (conexion != null) {
                conexion.cerrarConexion();
            }
        }
    }

    public static JSONObject espacios_sedes() {
        ConexionBD conexion = new ConexionBD();
        if (conexion.session == null) {
            return null;
        }
        Statement s = null;
        try {
            s = conexion.session.createStatement();
            String query = "select nombre_espacio, nombre_sede, tipo from espacio";
            ResultSet rs = s.executeQuery(query);

            conexion.session.setHoldability(rs.HOLD_CURSORS_OVER_COMMIT);

            JSONObject espacios = new JSONObject();
            int i = 0;
            while (rs.next()) {
                JSONObject espacio = new JSONObject();
                espacio.put("nombre_espacio", rs.getString(1));
                espacio.put("nombre_sede", rs.getString(2));
                espacio.put("tipo", rs.getString(3));

                espacios.put(++i + "", espacio);
            }
            rs.close();
            return espacios;

        } catch (SQLException se) {
            System.out.println("Error Consultando Espacios y Sedes!\n");
            return null;
        } catch (Exception ex) {
            System.out.println("Error Consultando Espacios y Sedes!\n");
            return null;
        } finally {
            if (conexion != null) {
                conexion.cerrarConexion();
            }
        }
    }

    public JSONObject getData(String espacio) {
        return null;
    }

    public JSONArray getPisos(String espacio) {
        ConexionBD conexion = new ConexionBD();
        if (conexion.session == null) {
            return null;
        }
        Statement s = null;
        try {
            s = conexion.session.createStatement();
            String query = "select id_piso,ruta_plano from piso where nombre_edificio = '" + espacio + "' ORDER BY id_piso asc";
            ResultSet rs = s.executeQuery(query);

            conexion.session.setHoldability(rs.HOLD_CURSORS_OVER_COMMIT);

            JSONArray pisos = new JSONArray();
            int i = 0;
            while (rs.next()) {
                JSONObject jo2 = new JSONObject();
                jo2.put("id_piso", rs.getString(1));
                jo2.put("ruta_plano", rs.getString(2));

                pisos.put(i++, jo2);
            }

            rs.close();

            if (conexion != null) {
                conexion.cerrarConexion();
            }
            return pisos;
        } catch (SQLException se) {
            System.out.println("Error Consultando Pisos!\n");
            return null;
        } catch (Exception ex) {
            System.out.println("Error Consultando Pisos!\n");
            return null;
        } finally {
            if (conexion != null) {
                conexion.cerrarConexion();
            }
        }
    }

    public JSONObject getPiso(String espacio, String piso) {
        ConexionBD conexion = new ConexionBD();
        if (conexion.session == null) {
            return null;
        }
        Statement s = null;
        try {
            s = conexion.session.createStatement();
            String query = "select id_piso,ruta_plano from piso where nombre_edificio = '" + espacio + "' and id_piso='" + piso + "' ORDER BY id_piso asc";
            ResultSet rs = s.executeQuery(query);

            conexion.session.setHoldability(rs.HOLD_CURSORS_OVER_COMMIT);

            JSONObject pisos = new JSONObject();
            rs.next();
            pisos.put("edificio", espacio);
            pisos.put("id_piso", rs.getString(1));
            pisos.put("ruta_plano", rs.getString(2));

            rs.close();
            if (conexion != null) {
                conexion.cerrarConexion();
            }
            return pisos;
        } catch (SQLException se) {
            System.out.println("Error Consultando Pisos!\n");
            return null;
        } catch (Exception ex) {
            System.out.println("Error Consultando Pisos!\n");
            return null;
        } finally {
            if (conexion != null) {
                conexion.cerrarConexion();
            }
        }
    }
}
